#pragma once

//////////////////////////////////////////////////////////////////////////
//Windows
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#include <windows.h>

//////////////////////////////////////////////////////////////////////////
//ATL
#define _ATL_ATTRIBUTES
#define _ATL_APARTMENT_THREADED
#define _ATL_NO_AUTOMATIC_NAMESPACE
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <atltypes.h>
#include <atlctl.h>
#include <atlhost.h>

//////////////////////////////////////////////////////////////////////////
//Compiler COM support
#include <comdef.h>
#include <comutil.h>

//////////////////////////////////////////////////////////////////////////
//STL
#include <string>
#include <sstream>
#include <algorithm>

//////////////////////////////////////////////////////////////////////////
//Custom
#include <Unicode.h>
#include <Diagnostics.h>

//////////////////////////////////////////////////////////////////////////
//Inline functions
inline void _throw_on_error(HRESULT hr, IErrorInfo * errInfo = NULL)
{
	if(FAILED(hr))
		_com_raise_error(hr, errInfo);
}

//////////////////////////////////////////////////////////////////////////
//COM Imports

#import "progid:Wscript.Shell" no_namespace \
	rename("FreeSpace", "WshFreeSpace") \
	rename("ExpandEnvironmentStrings", "WshExpandEnvironmentStrings") \
	rename("AddPrinterConnection", "WshAddPrinterConnection") \
	rename("SetDefaultPrinter", "WshSetDefaultPrinter") \
	rename("DeleteFile", "WshDeleteFile") \
	rename("MoveFile", "WshMoveFile") \
	rename("CopyFile", "WshCopyFile") 


//////////////////////////////////////////////////////////////////////////
//Definitions

#define APP_REG_KEY _T("HKLM\\Software\\SharpLauncher")